Skip to main content

无法携带 cookie

前后端是否设置参数

前端设置:

withCredentials: true //在跨域请求时,是否携带用户凭证;false会忽略 cookie

withCredentials 是 XMLHttpRequest 的一个属性,表示跨域请求是否提供凭据信息(cookie、HTTP 认证及客户端 SSL 证明等) 实际中用途就是跨域请求是要不要携带 cookie

后端同样设置了请求头:

response.setHeader("Access-Control-Allow-Credentials", "true");

跨域 post 请求不携带 cookie,前端设置了 axios.defaults.withCredentials = true;仍然无法解决 的解决思路

向后端先发送 post 请求之前,浏览器会先发送 OPTION 请求判断此地址是否可用,因为后端将这个预检请求拦截,导致 post 没有发送,也就没有携带 cookie 一说了

查看到我在发送 post 请求之前,浏览器还发送了一个 OPTION 请求

options 请求就是预检请求,可用于检测服务器允许的 http 方法。当发起跨域请求时,由于安全原因,触发一定条件时浏览器会在正式请求之前自动先发起 OPTIONS 请求,即 CORS 预检请求,服务器若接受该跨域请求,浏览器才继续发起正式请求。

解决方案:在后端的拦截器处,将所有的 OPTION 请求都通过

参考文章